package us.kg.kotoriforest.schedule.dao;

import us.kg.kotoriforest.schedule.pojo.SysUser;

import java.util.List;

/**
 * ClassName: us.kg.kotoriforest.schedule.dao.SysUserDAO </br>
 * Description: sys_user 表的 DAO 接口
 *
 * @author Kotori rotroutine@163.com
 * @since 2024/12/1
 */
public interface SysUserDAO {
    /**
     * 根据用户的 uid 查询用户的信息
     *
     * @param uid 用户 uid
     * @return 查询到的用户数据封装成的 ORM 对象，如果没有查询到则返回 null
     */
    SysUser selectByUid(int uid);

    /**
     * 查询所有的用户信息
     * @return 用户信息构成的 ORM 对象的集合，如果没有查询到则返回空集合
     */
    List<SysUser> selectAll();

    /**
     * 向 sys_user 表中插入一条新记录
     * @param user 新增用户的信息，不需要填写 uid 字段
     * @return 添加成功返回值大于 0, 添加失败返回值为 0
     */
    int insert(SysUser user);

    /**
     * 更新用户信息
     * @param user 修改后用户的信息，用户的 uid 字段不能修改
     * @return 更新成功返回值大于 0, 更新失败返回值为 0
     */
    int update(SysUser user);

    /**
     * 根据 uid 删除一条用户记录
     * @param uid 要删除用户的 uid
     * @return 删除成功返回值大于 0, 删除失败返回值为 0
     */
    int deleteByUid(int uid);

    /**
     * 统计表中用户的数量
     * @return 表中用户的数量
     */
    int countAll();

    /**
     * 根据用户名查找用户信息
     *
     * @param username 用户名
     * @return 查找到的用户数据封装成的 ORM 对象，如果没找到则返回 null
     */
    SysUser selectByUsername(String username);
}
